home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
United Public Domain Gold 2
/
United Public Domain Gold 2.iso
/
music_utilities
/
pt125.dms
/
pt125.adf
/
fmsynth_3.2
/
FMsynth.doc
< prev
next >
Wrap
Text File
|
1992-09-02
|
19KB
|
623 lines
1m FMsynth v3.2 m
1m User Manual m
1m1 Introductionm
FMsynth is a program for generating sounds by FM Synthesis. The
sounds can be played on your Amiga keyboard and saved in IFF-8SVX
or raw format.
1m2 Copyrightm
© Copyright 1993 by Christian Stiens
Heustiege 2
D-59348 Lüdinghausen
Germany
The distribution of the complete and unchanged paket is allowed
to uncommercial mailboxes/FTP-servers and to the following public
domain series:
- Fred Fish
- AMOK
- Time
- Saar
- AM/FM
You use this program on your own risk. There is no liability or
responsibility for any damages caused by the use of this program.
All Rights reserved.
The MIDI Library and related files are Copyright (C) 1987, 1988,
Pregnant Badger Music. All rights reserved.
1m3 Registrationm
FMsynth is Shareware and protected by a key file. Without the key file
you can't save your sounds and voices. If you want to register,
then please send 30 DM or 20 US$ or the equivalent amount in your local
currency to me. You can send cash or an eurocheck. Please add your
full address to the registration request. If you want to receive the
key via email then tell me your internet email address.
1m4 Installationm
Copy the arp.library to LIBS: if you don't have AmigaOS 2.04 or greater.
Copy the midi.library to LIBS: if you want to play your FM sounds on
a midi keyboard which is connected to the amiga.
The best place for the rexx programs is the REXX: directory because
otherwise they can't be found, if they are not in the current directory.
Copy the key file (if you are happy to own one) to the directory
in which FMsynth is contained, because the key is searched first in
the current dir and second in "PROGDIR:".
1m5 Manualm
1m5.1 The FM Synthesism
First a little introduction to the FM Sythesis. The FM Synthesis
was developed by John Chowning and used in the DX7 (one of the best
sold synthesisers ever) and his successors.
The priciple of the FM Synthesis is that one sinus wave modulates
another sinus wave. Written as a formula it looks like:
A(t) = Ac * sin(Fc * t + Am * sin(Fm * t))
Ac: The amplitude of the carrier wave
Am: The amplitude of the modulator wave
Fc: The frequency of the carrier
Fm: The frequency of the modulator
As you see, the modulator wave modulates the phase of the carrier
wave. This leads to the addition of harmonics to the carrier wave.
The ratio Fc to Fm determines, whether the sound is harmonic (periodic)
or non harmonic (not periodic). If the ratio is not rational
(e.g. 1 to 3.1415), then the sound is not harmonic, if it is rational
(e.g. 2 to 3), then the sound is harmonic. The frequency of the sound is
equal to the greatest divisor of Fc and Fm.
The modulated wave has harmonics at Fc + n * Fm, where n ranges
through the integers. Negative frequencies must be interpreted
as positive frequencies with sign changed. The number of harmonics
is determined by Am.
There are six operators (sinus generators) which can be combined in
different ways (the so called algorithms).
An example of an algorithm is given in the following figure (DX7
notation):
+---+
| 3 |
+---+
|
+---+ +---+ +---+
| 2 | | 5 | | 6 |
+---+ +---+ +---+
| | /
+---+ +---+
| 1 | | 4 |
+---+ +---+
|_________|
The operators #1 and #4 are the carriers in this example, the other
operators work as modulators. This algorithm is consisting of two
parts by three operators. In the first part operator #3 modulates
operator #2, this modulates operator #1. In the second part
operators #5 and #6 are modulating the operator #4.
FMsynth's operators can also generate a triangle-, sawtooth- and
square wave.
1m5.2 General operating hintsm
Requesters: You can hit the RETURN key instead of clicking in the
right gadget and hit the ESC key instead of clicking in the left
gadget.
Windows: Nearly all windows (the "Any Chord" window and requester windows
excepted) are asynch, that means, you don't have to close these windows,
to go on with the program. You can hit the ESC key instead of clicking in the
close gadget of the windows to get rid of the windows.
1m5.3 The Startm
FMsynth can be started as usual via CLI or Workbench.
1m5.4 Argumentsm
You can put the following arguments in FMsynth's icon:
PALETTE=###,###,###,### determines the screen colors
VOICEDIR=... determines the default directory for the
.voice files. Don't forget to append a slash
or a colon.
INSTDIR=... determines the default directory for the
instrument files. Don't forget to append
a slash or a colon.
LACE=TRUE|FALSE if TRUE then the screen is interlaced
The icon is parsed also, if you start FMsynth in the CLI. Exceptions:
The program is found not direct, but over the search path (Kick 1.3).
The program is resident (Kick 2.04+).
1m5.5 The Screenm
The screen title displays the actual voice number and name.
An "A" is displayed, if the AutoCalc mode is activated. The last
thing, which is shown in the title bar is the actual chord setting.
1m5.5.1 Operatorm
Here you can edit the parameters of the 6 operators.
KSc/R: Fmsynth uses 5 sound buffers (one for each octave).
With this key rate scaling parameter you can determine
how much the speed of the envelope increases for
higher octaves. The default value of 64 leads to doubling
of the rate per octave.
KSc/L: With the default value 64 of the key level scaling parameter
the level of all 5 sound buffers is the same. If you
increase (decrease) this value you can achieve, that
the output level of the operator is higher (lower) in high
octaves than in low octaves.
Attention: If one or more KSc values of some operator is
not equal to 64, then the time for calculating the sound
is doubled, because in this case each of the 5 sound buffers
must be calculated individual.
Rate/1-4: The rates of the four envelope segments. They determine,
how fast the corresponding level is reached.
Level/1-4: The levels of the four envelope segments
OL: This parameter determines the output level of the operator.
If the operator work as carrier, then this parameter
influences the loudness. If it works as modulator, then
it influences the timbre.
Ph: With this gadget you can determine the initial phase
of the operator. The value 63 means +180 degrees, the
value -64 stands for -180 degrees.
Freq: In this string gadget you can enter the frequency of the
operators.
Detune: The operators can be detuned in the range -15 upto 15.
One unit is 1.13 cents (100 cents is one half tone step).
Click on the arrow gadgets to increase or decrease the
detuning. If you hold the shift key then the detune
is changed by 5 on every click.
Mode: Determines whether the operator's frequency is fixed or
relative. In mode "RATIO" the frequency of the operator
is relative to the note played on the keyboard. The
value "1.0" leads to the usual tuning (A = 440 Hz).
If the mode is "FIXED" the frequency of the operator is
constant 1000 Hz, if you enter "1000.0" to the string
gadget. But this is not quite true, because not every
note has an own buffer but every octave. So the actual
frequency can be 41% more or less.
Attention: If the mode of one or more operators is "FIXED",
then the time for calculating the sound is doubled, because
in this case each of the 5 sound buffers must be calculated
individual.
PEG: See 4.5.3 (Pitch-EG)
Wave: Click in the gadget in the top right corner of the field
to change the operator's waveform.
1m5.5.2 LFOm
In this field you can edit the parameters of the low frequency oscillator
in realtime. The purpose of the LFO is to enrich the sound with a vibrato
(either of the pitch or the amplitude).
Spd: The speed of the LFO
Del: The delay after a key press until the vibrato begins.
AMD: The amount of the amplitude modulation
PMD: The amount of the pitch modulation
You can choose among 5 different waves of the LFO.
1m5.5.3 Algorithmm
Here you can edit the algorithm. Click on a modulator and the carrier
which should be modulated. If the connection already exists, it is
deleted. If not, the connection is added. If the number of the modulator
is less or equal to the number of the carrier then the connection is
a feedback loop and is drawn in another color.
The feedback is used for sawtooth like waves and for generating
white noise.
The algorithmus of section 4.1 looks here as follow:
+---+ +---+ +---+ +---+ +---+ +---+
| 1 | | 2 | | 3 | | 4 | | 5 | | 6 |
+---+ +---+ +---+ +---+ +---+ +---+
/ / / ____/
/ / /____/
/ / //
+---+ +---+ +---+ +---+ +---+ +---+
| 1 | | 2 | | 3 | | 4 | | 5 | | 6 |
+---+ +---+ +---+ +---+ +---+ +---+
| |
The little marks below the carrier gadgets indicate, which operators
work as carriers.
1m5.5.4 Soundm
Calc: The sound is calculated.
Size: The size of all 5 sound buffers all together.
Transp: The frequency of each operator that is in mode "ratio"
is multiplied with this transpose value. If you want
to create a bass sound then you could put the value
0.25 in the gadget for tuning the sound two octaves
lower.
Feedback: The amount of the feedback.
Mode: Determines, whether the sound is playable polyphone or
monophone.
Filter: Here you can turn the low pass filter of the Amiga on or
off.
Volume: The amplitude of the sound. If the slider is right of the
middle position then distortion can occur.
RlRate: The release rate at releasing a key. This parameter can be
changed in realtime.
1m5.6 The Menusm
1m5.6.1 Projectm
4mOpen Voicem
Lets you load the parameters of a saved sound.
4mSave Voicem
Lets you save the parameters of the actual sound in a file.
4mSave 8SVX-5m
The actual sound is saved in IFF-8SVX (5 octave) format.
4mSave 8SVX-1m
The actual sound is saved in IFF-8SVX (1 octave) format.
4mSave Rawm
One octave of the sound is saved in raw format.
4mChoose Octavem
Here you can select the octave, which is used for saving in 8SVX-1 or
raw format.
4mRelease Channelsm
Frees the audio channels and the CIAA timer A. If you want to
go on with the program click on the "Ok" Gadget.
4mNewm
Resets the program to the initial settings.
4mAboutm
Displays some information of the program
4mQuitm
You can leave the program with this menu item.
1m5.6.2 Voicem
4mInitm
Resets the actual voice to the default settings.
4mCopym
Here you can copy the actual voice to another voice.
1m5.6.3 Operatorm
4mInitm
Resets the actual operator to the default settings.
4mCopym
Here you can copy the settings of the actual operator to one or more
other operators.
4mEG Copym
Here you can copy the envelope settings of the actual operator to
one or more other operators.
4mFrequencym
Here you can double or halve the frequency of the actual operator.
With the "Set" item you can clear and activate the "Freq" gadget
of the operator field.
1m5.6.4 Specialm
4mAlgorithmm
Here are presets of 10 often used algorithms.
4mChordm
FMsynth can calculate chords directly. This is usefull, because
the Amiga has only four audio channels and a chord would
eat at least 3 of them. You can choose among 7 different chords:
- Major (major)
- Minor (minor)
- Dimished (dim)
- Suspended 4 (sus 4)
- Dominant Sept (7th)
- Major Sept (maj 7)
- Minor Sept (min 7)
Please note that the calculation of a chord takes three till
four times as long as the calculation of the normal sound.
You can also build any other chord. If you choose this menu
item, a dialog window appears. Enter the halftone numbers of the
chord and the number of partials in the gadgets. For example
the major chord has halftones 0, 4, 7 and the number of
partials is 3.
A simplier way to specify the chord is to play it on the keyboard,
the notes are then put in the gadgets automatically. Hit the space key,
if you have misplayed the chord and play it again. The base
key for the chord is C2 (key 'Q') on the keyboard.
You can put fractional values in the partial gadgets, so you
can generate detuned sounds. The values are then between
-0.2 and 0.2 typically.
4mCalc Soundm
This item is equivalent to the "Calc" gadget and leads to the calculation
of the sound.
4mAutoCalcm
If this item is selected, then after each parameter change the sound
is calculated new automatically.
4mLoopm
Opens the loop window, in which you can set or clear the loop of your
sound. For this purpose click at the start of the loop with the left
mouse button and the right mouse button at the end of the loop. To
clear the loop hit the "Off" gadget. To reset the loop to the initial
setting press the "Undo" gadget.
Only one loop can be set for all five octaves.
4mFourierm
Opens the "Fourier-Analysis" window, which performs a fourier analysis
over the loop of your sound. This is for looking into the harmonics of
the sound.
4mPitch-EGm
This opens the "Pitch-EG" window. Here you can set the pitch envelope
of your sound. The level 63 means increasing of the pitch by one
octave. Level -32 stands for decreasing the pitch by one octave and
level -64 means frequency null.
To enable the Pitch-EG for an operator, you must set the PEG gadget
to "ON".
4mGraph. EGm
Opens the "Graphic EG" Window. Here you can edit the envelope of the
actual Operator with the mouse. Click on one of the four knobs and
move it.
The scale is adjusted to the lenght of the actual sound, so that
the left edge of the edit field corresponds to the begin of the
sound and the right edge of the field corresponds to the end of
the sound. If the rate scaling parameter is not on the default
value of 64 then this correspondance is not given anymore.
1m5.6.5 MIDIm
4mReceivem
Here you can set the Midi channel for receiving midi commands.
4mVel sensm
Determines the velocity curve.
4mTransposem
With this menu item a transpose of midi notes in the range +/- 2 octaves
is possible.
1m5.7 Keysm
1m5.7.1 The Keyboardm
Octave 2 2 3 5 6 7 9 0 '
Q W E R T Z U I O P Ü +
Octave 1 S D G H J L Ö #
Y X C V B N M , . - SHIFT
The keyboard at the lower part of the screens shows, which keys
are pressed actual (only for PAL able Amigas).
1m5.7.2 Functionkeysm
Hit F1 - F5 to switch between the five voices. For voice #2 upto #5
you must first set up the buffer by activating the "Size" Gadget and
specifying the desired length of the sound buffer.
With F6 - F10 you determine, which octaves can be reached with the
keyboard. The offset is displayed as a little mark below the keyboard
picture.
1m5.7.3 Space keym
At each time you can stop the sound output with the space key.
1m5.8 ARexxm
FMsynth has an ARexx-Port called "FMSYNTH". It understands the
following commands:
openvoice <name> Opens voice <name>. Returns 5 on error.
calcsound The sound is calculated.
save8svx5 <name> Saves the actual sound to file <name> in
8SVX 5-Oktav format. RC=5 on error.
save8svx1 <name> [<#(1-5)>] Save the specified octave of the actual voice
to file <name> as 8SVX 1 octave file.
Return 5 on error.
saveraw <name> [<#(1-5)>] Saves the sound in raw format.
voice [<#(1-5)>] Sets the specified voice and returns the
old voice number.
operator [<#(1-6)>] Sets the specified operator und returns
the old operator number.
openwindow <name> [<#> <#>] Opens the window <name> on the specified
position. <name> can be one of:
f(ourier), l(oop), p(itcheg), g(raphiceg)
noteon {<#(0-60)>} Presses the specified notes.
noteoff {<#(0-60)>} Releases the specified notes.
pause <#.#> Performs a pause with the specified length
in seconds.
quit Quits FMsynth.
If you start FMsynth the rexx program 'startup.fmsy' is called.
The keys Shift-F1 till Shift-F10 call the rexx programs sf1.fmsy till
sf10.fmsy. The cursor keys call the rexx programs up.fmsy, down.fmsy,
left.fmsy and right.fmsy.
1m5.9 Midim
FMsynth supports the following Midi commands:
- Noteon (with velocity)
- Noteoff
- Pitchbend (+/- 2 half tones)
- Program change (0..4 for voice #1..#5)
1m5 Some tips for sound programmingm
Good sounds have a dynamic spectrum, that means its harmonics change
continuous. There are two ways for achieving this. First with the
envelope on the modulators and second with detuning.
You can simulate an analog filter by modulating a sinus wave with
a sawtooth wave. The output of the modulator then determines the
cutoff frequency.
1m6 Compatibilitym
If you want to use your sounds in other programs like Sonix or
MED (© Teijo Kinnunnen) you should consider that the realtime
parameters (release rate and LFO) have only affect if you play
the sounds in FMsynth. They have no effect to the 8svx file.
If you play a 8SVX 5-octave sound in MED, you will notice, that
the sound quality is not as good, as if you play the sound
directly in FMsynth. This reason for this is, that FMsynth
uses a higher sampling rate for playing the sound on average.
1m8 Supportm
Thanx for support to following persons:
- Stephan `PowerPlayer' Fuhrmann
- Ewan MacPherson
- Jeff `Idealord' Harrington,
- Bill Schottstaedt
- Jürgen `DX-Editor' Zimmermann
And last but not least Fridtjof `Oberon' Siebert for the great
Amiga Oberon Compiler.
1m9 The endm
If you have programmed good sounds, then please send them to me
(in voice format not 8svx format!). The best sounds are included
to the next release of FMsynth.
3mMuch fun!m